package com.haixiaoke.saas.order.service;

import com.haixiaoke.saas.order.domain.OrderRefundItem;

import java.util.List;

/**
 * 订单退费项目及价格Service接口
 *
 * @author panda
 * @date 2024-04-19
 */
public interface IOrderRefundItemService {
    /**
     * 查询订单退费项目及价格
     *
     * @param refundId 订单退费项目及价格主键
     * @return 订单退费项目及价格
     */
    OrderRefundItem selectOrderRefundItemByRefundId(Long refundId);

    /**
     * 查询订单退费项目及价格列表
     *
     * @param orderRefundItem 订单退费项目及价格
     * @return 订单退费项目及价格集合
     */
    List<OrderRefundItem> selectOrderRefundItemList(OrderRefundItem orderRefundItem);

    /**
     * 新增订单退费项目及价格
     *
     * @param orderRefundItem 订单退费项目及价格
     * @return 结果
     */
    int insertOrderRefundItem(OrderRefundItem orderRefundItem);

    /**
     * 修改订单退费项目及价格
     *
     * @param orderRefundItem 订单退费项目及价格
     * @return 结果
     */
    int updateOrderRefundItem(OrderRefundItem orderRefundItem);

    /**
     * 批量删除订单退费项目及价格
     *
     * @param refundIds 需要删除的订单退费项目及价格主键集合
     * @return 结果
     */
    int deleteOrderRefundItemByRefundIds(Long[] refundIds);

    /**
     * 删除订单退费项目及价格信息
     *
     * @param refundId 订单退费项目及价格主键
     * @return 结果
     */
    int deleteOrderRefundItemByRefundId(Long refundId);

    /**
     * 批量插入订单退费项目信息
     * @param orderRefundItemList
     * @return
     */
    int insertBatchOrderRefundItem(List<OrderRefundItem> orderRefundItemList);

    /**
     * 根据订单id查询退款项目
     * @param orderId
     * @return
     */
    List<OrderRefundItem> selectOrderRefundItemByOrderId(String orderId);

    /**
     * 批量修改订单退费项目及价格
     *
     * @param refundItemList 订单退费项目及价格集合
     * @return 结果
     */
    int updateBatchOrderRefundItem(List<OrderRefundItem> refundItemList);

    /**
     * 根据订单id和退费类型查询指定退费数据
     * @param orderId
     * @param refundType
     * @return
     */
    OrderRefundItem selectOrderRefundItemByOrderIdAndRefundType(String orderId, String refundType);
    OrderRefundItem selectOrderRefundItemByOrderIdAndRefundTypeAndRecordId(String orderId, String refundType,Long recordId);

    List<OrderRefundItem> selectOrderRefundItemByOrderIdOrLinkedOrderId(String orderId);

    List<OrderRefundItem> selectOrderRefundItemByOrderIdAndRecordId(String orderId, Long recordId);

    int deleteOrderRefundItemByOrderId(String orderId);
}
